package com.zhongkun.datahome.service.service;

import com.zhongkun.datahome.service.domain.AppointmentRecord;
import com.zhongkun.datahome.service.req.cmd.appointment.AppointmentAddCmd;
import com.zhongkun.datahome.service.req.cmd.appointment.AppointmentCancelCmd;
import com.zhongkun.datahome.service.req.cmd.appointment.AppointmentJoinCmd;
import com.zhongkun.datahome.service.req.cmd.appointment.AppointmentUpdateCmd;
import com.zhongkun.datahome.service.req.cmd.appointment.AppointmentViewCmd;
import com.zhongkun.datahome.service.req.qry.appointment.AppointmentQry;
import com.zhongkun.datahome.service.res.PageVo;
import com.zhongkun.datahome.service.res.appointment.AppointmentVo;

import javax.servlet.http.HttpServletResponse;

/**
 * @Author: MinKun
 * @Date: Created in 2025/6/26
 * @Description:
 */
public interface IAppointmentService {

    boolean addAppointment(AppointmentAddCmd cmd);

    boolean checkCustom(AppointmentAddCmd cmd);

    boolean checkUpdateCustom(AppointmentUpdateCmd cmd);

    boolean updateAppointment(AppointmentUpdateCmd cmd);

    PageVo<AppointmentVo> page(AppointmentQry qry);

    void joinAppointment(AppointmentJoinCmd cmd);

    AppointmentViewCmd queryAppointmentView(Long id, Long houseId);

    AppointmentVo queryMatchAppointment(Long customerHouseId);

    void cancelAppointment(AppointmentCancelCmd cmd);

    void deleteAppointment(Long id);

    void updateTimeSlot(AppointmentRecord appointmentRecord);

    void export(AppointmentQry qry, HttpServletResponse response);
}
